🌎 rns.kin.earth git 🌍
RNS/Interfaces/Interface.py bb53bd3f27cf3ac17f3cf5f425afaf0d9ea2fdf8 (bb53bd3f) Text, 3.65 KB
T8b949e# MIT License
T8b949e#
T8b949e# Copyright (c) 2016-2022 Mark Qvist / unsigned.io
T8b949e#
T8b949e# Permission is hereby granted, free of charge, to any person obtaining a copy
T8b949e# of this software and associated documentation files (the "Software"), to deal
T8b949e# in the Software without restriction, including without limitation the rights
T8b949e# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
T8b949e# copies of the Software, and to permit persons to whom the Software is
T8b949e# furnished to do so, subject to the following conditions:
T8b949e#
T8b949e# The above copyright notice and this permission notice shall be included in all
T8b949e# copies or substantial portions of the Software.
T8b949e#
T8b949e# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
T8b949e# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
T8b949e# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
T8b949e# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
T8b949e# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
T8b949e# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
T8b949e# SOFTWARE.
Tff7b72import T7ee787RNS
Tff7b72import T7ee787time
Tff7b72import T7ee787threading
Tff7b72class T56d364InterfaceTb4b4b4:
Te6edf3IN Tff7b72= Tff7b72False
Te6edf3OUT Tff7b72= Tff7b72False
Te6edf3FWD Tff7b72= Tff7b72False
Te6edf3RPT Tff7b72= Tff7b72False
Te6edf3name Tff7b72= Tff7b72None
T8b949e# Interface mode definitions
Te6edf3MODE_FULL Tff7b72= T79c0ff0x01
Te6edf3MODE_POINT_TO_POINT Tff7b72= T79c0ff0x02
Te6edf3MODE_ACCESS_POINT Tff7b72= T79c0ff0x03
Te6edf3MODE_ROAMING Tff7b72= T79c0ff0x04
Te6edf3MODE_BOUNDARY Tff7b72= T79c0ff0x05
Te6edf3MODE_GATEWAY Tff7b72= T79c0ff0x06
T8b949e# Which interface modes a Transport Node
T8b949e# should actively discover paths for.
Te6edf3DISCOVER_PATHS_FOR Tff7b72= Tb4b4b4[Te6edf3MODE_ACCESS_POINTTb4b4b4, Te6edf3MODE_GATEWAYTb4b4b4]
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffrxb Tff7b72= T79c0ff0
Tff7b72selfTff7b72.Td2a8fftxb Tff7b72= T79c0ff0
Tff7b72selfTff7b72.Td2a8ffonline Tff7b72= Tff7b72False
Tff7b72def Td2a8ffget_hashTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72return Te6edf3RNSTff7b72.Td2a8ffIdentityTff7b72.Td2a8fffull_hashTb4b4b4(Tffa657strTb4b4b4(Tff7b72selfTb4b4b4)Tff7b72.Td2a8ffencodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72def Td2a8ffprocess_announce_queueTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tffa657hasattrTb4b4b4(Tff7b72selfTb4b4b4, Ta5d6ff"Ta5d6ffannounce_capTa5d6ff"Tb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffannounce_cap Tff7b72= Te6edf3RNSTff7b72.Td2a8ffReticulumTff7b72.Td2a8ffANNOUNCE_CAP
Tff7b72if Tffa657hasattrTb4b4b4(Tff7b72selfTb4b4b4, Ta5d6ff"Ta5d6ffannounce_queueTa5d6ff"Tb4b4b4)Tb4b4b4:
Tff7b72tryTb4b4b4:
Te6edf3now Tff7b72= Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)
Te6edf3stale Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72for Te6edf3a Tff7b72in Tff7b72selfTff7b72.Td2a8ffannounce_queueTb4b4b4:
Tff7b72if Te6edf3now Tff7b72> Te6edf3aTb4b4b4[Ta5d6ff"Ta5d6fftimeTa5d6ff"Tb4b4b4]Tff7b72+Te6edf3RNSTff7b72.Td2a8ffReticulumTff7b72.Td2a8ffQUEUED_ANNOUNCE_LIFETb4b4b4:
Te6edf3staleTff7b72.Td2a8ffappendTb4b4b4(Te6edf3aTb4b4b4)
Tff7b72for Te6edf3s Tff7b72in Te6edf3staleTb4b4b4:
Tff7b72if Te6edf3s Tff7b72in Tff7b72selfTff7b72.Td2a8ffannounce_queueTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffannounce_queueTff7b72.Td2a8ffremoveTb4b4b4(Te6edf3sTb4b4b4)
Tff7b72if Tffa657lenTb4b4b4(Tff7b72selfTff7b72.Td2a8ffannounce_queueTb4b4b4) Tff7b72> T79c0ff0Tb4b4b4:
Te6edf3min_hops Tff7b72= Tffa657minTb4b4b4(Te6edf3entryTb4b4b4[Ta5d6ff"Ta5d6ffhopsTa5d6ff"Tb4b4b4] Tff7b72for Te6edf3entry Tff7b72in Tff7b72selfTff7b72.Td2a8ffannounce_queueTb4b4b4)
Te6edf3entries Tff7b72= Tffa657listTb4b4b4(Tffa657filterTb4b4b4(Tff7b72lambda Te6edf3eTb4b4b4: Te6edf3eTb4b4b4[Ta5d6ff"Ta5d6ffhopsTa5d6ff"Tb4b4b4] Tff7b72== Te6edf3min_hopsTb4b4b4, Tff7b72selfTff7b72.Td2a8ffannounce_queueTb4b4b4)Tb4b4b4)
Te6edf3entriesTff7b72.Td2a8ffsortTb4b4b4(Te6edf3keyTff7b72=Tff7b72lambda Te6edf3eTb4b4b4: Te6edf3eTb4b4b4[Ta5d6ff"Ta5d6fftimeTa5d6ff"Tb4b4b4]Tb4b4b4)
Te6edf3selected Tff7b72= Te6edf3entriesTb4b4b4[T79c0ff0Tb4b4b4]
Te6edf3now Tff7b72= Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)
Te6edf3tx_time Tff7b72= Tb4b4b4(Tffa657lenTb4b4b4(Te6edf3selectedTb4b4b4[Ta5d6ff"Ta5d6ffrawTa5d6ff"Tb4b4b4]Tb4b4b4)Tff7b72*T79c0ff8Tb4b4b4) Tff7b72/ Tff7b72selfTff7b72.Td2a8ffbitrate
Te6edf3wait_time Tff7b72= Tb4b4b4(Te6edf3tx_time Tff7b72/ Tff7b72selfTff7b72.Td2a8ffannounce_capTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffannounce_allowed_at Tff7b72= Te6edf3now Tff7b72+ Te6edf3wait_time
Tff7b72selfTff7b72.Td2a8ffprocessOutgoingTb4b4b4(Te6edf3selectedTb4b4b4[Ta5d6ff"Ta5d6ffrawTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72if Te6edf3selected Tff7b72in Tff7b72selfTff7b72.Td2a8ffannounce_queueTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffannounce_queueTff7b72.Td2a8ffremoveTb4b4b4(Te6edf3selectedTb4b4b4)
Tff7b72if Tffa657lenTb4b4b4(Tff7b72selfTff7b72.Td2a8ffannounce_queueTb4b4b4) Tff7b72> T79c0ff0Tb4b4b4:
Te6edf3timer Tff7b72= Te6edf3threadingTff7b72.Td2a8ffTimerTb4b4b4(Te6edf3wait_timeTb4b4b4, Tff7b72selfTff7b72.Td2a8ffprocess_announce_queueTb4b4b4)
Te6edf3timerTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffannounce_queue Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffError while processing announce queue on Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Tff7b72selfTb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff. The contained exception was: Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_ERRORTb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffThe announce queue for this interface has been cleared.Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_ERRORTb4b4b4)
Tff7b72def Td2a8ffdetachTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72pass
Served by rngit 1.5.2 - Generated in 0.04s